package com.AdvancedDemos.LearnVariousAPI.时间日期类.JDK8新时间日期类;

import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class LearnZoneId_ZoneDateTime {
    public static void main(String[] args) {
        /*
         * 时区 与 带时区的日期时间 ZoneId ZoneDateTime
         * 时区通常用 洲名/城市名 表示 : Asia/Shanghai Asia/Chongqing America/New_York
         * */

        //ZoneId代表时区Id , ZoneId类中的常见方法:
        //1.public static ZoneId systemDefault(); 获取系统默认的时区
        System.out.println("---------------");
        ZoneId zoneId = ZoneId.systemDefault();
        String 默认时区 = zoneId.getId();
        System.out.println(默认时区);//默认时区Asia/Shanghai
        System.out.println(zoneId.toString());
        /*
        zoneId.toString中调用的就是getId方法
        public String toString() {
            return getId();
        }
        */

        //2.public static Set<String> getAvailableZoneId(); 获取Java支持的全部时区Id
        System.out.println("---------------");
        System.out.println(ZoneId.getAvailableZoneIds());

        //3.public static ZoneId of(String zoneId); 把某个时区id封装成ZoneId对象

        System.out.println("---------------");
        ZoneId zoneId1 = ZoneId.of("America/New_York");
        System.out.println(zoneId1);


        //与LocalDateTime类似ZonedDateTime可以用
        // public static ZoneDateTime now(ZoneId zone) 获得某个时区的ZoneDateTime区域日期时间对象
        System.out.println("---------------");
        ZonedDateTime newYork = ZonedDateTime.now(zoneId1);
        ZonedDateTime shangHai = ZonedDateTime.now(zoneId);
        System.out.println(shangHai);
        System.out.println(newYork);//中美时差12hours
        System.out.println(ZonedDateTime.now());//如果now中什么都不传,得到的就是当地时区时间

        System.out.println("---------------");
        ZonedDateTime worldStandardTime = ZonedDateTime.now(Clock.systemUTC());//获得世界标准时间
        System.out.println("世界标准时间 : " + worldStandardTime);//世界标准时间就是英国格林威治标准时间
        System.out.println(ZonedDateTime.now(ZoneId.of("GMT")));//Greenwich Mean Time 格林威治标准时间
        System.out.println(ZonedDateTime.now(ZoneId.of("Greenwich")));

        System.out.println("---------------");
        //ZoneDateTime类与LocalDateTime类一模一样,也有getXXX withXXX plusXXX minusXXX ... 函数

    }
}
